#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
    pub val: i32,
    pub next: Option<Box<ListNode>>,
}

impl ListNode {
    #[inline]
    pub fn new(val: i32) -> Self {
        ListNode { val, next: None }
    }

    pub fn set_next(&mut self, node: Option<ListNode>) {
        if node.is_some() {
            self.next = Some(Box::new(node.unwrap()));
        } else {
            self.next = None;
        }
    }
}   

// pub fn build_list(v: &[i32]) -> Option<Box<ListNode>> {
//     if v.len() == 0 {
//         return None;
//     }

//     let mut l = Some(Box::new(ListNode::new(v[0])));
//     let mut p;
//     for i in 1..v.len() {
//         let p =
//     }
// }


